#region LGPL License
//
//Adriano Ribeiro <adribeiro@gmail.com>
//
//Copyright (c) 2007 Mono Overlay Routing Foundation Team
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


#endregion


using System;
using System.Text;
using System.IO;
using System.Xml.Serialization;
using System.Runtime.Serialization.Formatters.Binary;


namespace Monorf.Serialization
{
        /// <summary>
        /// Description of ProcessData.
        /// </summary>
        public class Deserializer
        {
                
                /// <summary>
                /// deserializa um objeto Message
                /// </summary>
                /// <param name="buffer"></param>
                /// <returns></returns>
                public static T FromXML<T>(byte[] buffer)
                {
                        MemoryStream ms = new MemoryStream(buffer);
                        
                        XmlSerializer sx =
                                new XmlSerializer(typeof(T));
                        
                        return (T)sx.Deserialize(ms);
                }

                /// <summary>
                /// deserializa um objeto serializado com BinaryFormater
                /// </summary>
                /// <param name="buffer"></param>
                /// <returns></returns>
                public static T FromBinary<T>(byte[] buffer) {
                        MemoryStream ms = new MemoryStream(buffer);
                        BinaryFormatter bf = new BinaryFormatter();

                        return (T)bf.Deserialize(ms);
                }
        }
}
